let arr = [1, [2, [3, 4]]]  // [1, 2, 3, 4]

// console.log(arr.flat(Infinity));

// function flatten(arr) {
//     let result = []
//     for (let item of arr) {
//         if (Array.isArray(item)) {
//             result = result.concat(flatten(item))
//         } else {
//             result.push(item)
//         }
//     }
//     return result
// }

// function flatten3(arr) {

// }

function flatten4(arr) {
    while (arr.some(item => Array.isArray(item))) {
        arr = [].concat(...arr)
    }
    return arr
}

console.log(flatten3(arr));
